<!DOCTYPE HTML>
<html>
  <!--
  https://bugzilla.mozilla.org/show_bug.cgi?id=633602
  -->
  <head>
    <title>Bug 633602 - file_nestedFullScreen.html</title>
    <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js">
    </script>
    <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js">
    </script>
    <script type="application/javascript" src="pointerlock_utils.js"></script>
    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
  </head>
  <body>
    <a target="_blank"
       href="https://bugzilla.mozilla.org/show_bug.cgi?id=633602">
      Mozilla Bug 633602
    </a>

    <div id="parentDiv">
      <div id="childDiv"></div>
    </div>

    <script type="application/javascript">
      /*
       * Test for Bug 633602
       * Requesting fullscreen on a child element of the element with
       * the pointer locked should unlock the pointer
       */

      SimpleTest.waitForExplicitFinish();

      var parentDiv = document.getElementById("parentDiv")
        , childDiv = document.getElementById("childDiv")
        , parentDivLocked = false
        , parentDivFullScreen = false
        , pointerLocked = false;

      function runTests () {
        ok(parentDivLocked, "After requesting pointerlock on parentDiv " +
          "document.pointerLockElement should be equal to " +
          " parentDiv element");
        isnot(pointerLocked, true, "Requesting fullscreen on " +
          "childDiv while parentDiv still in fullscreen should " +
          "unlock the pointer");
      }

      document.addEventListener("pointerlockchange", function (e) {
        if (document.pointerLockElement === parentDiv) {
          parentDivLocked = true;
          addFullscreenChangeContinuation("enter", function() {
            pointerLocked = !!document.pointerLockElement;
            addFullscreenChangeContinuation("exit", function() {
              addFullscreenChangeContinuation("exit", function() {
                runTests();
                SimpleTest.finish();
              });
              document.exitFullscreen();
            });
            document.exitFullscreen();
          });
          childDiv.requestFullscreen();
        }
      }, false);

      function start() {
        addFullscreenChangeContinuation("enter", function() {
          parentDivFullScreen = true;
          parentDiv.requestPointerLock();
        });
        parentDiv.requestFullscreen();
      }
    </script>
  </body>
</html>
